package com.joyplus.tvhelper.ui;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.AlertDialog;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils.TruncateAt;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.AbsListView.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.joyplus.mediaplayer.JoyplusMediaPlayerManager;
import com.joyplus.mediaplayer.JoyplusMediaPlayerScreenManager;
import com.joyplus.sub_old_1.JoyplusSubManager;
import com.joyplus.tvhelper.R;
import com.joyplus.tvhelper.VideoPlayerJPActivity;
import com.joyplus.tvhelper.entity.URLS_INDEX;
import com.joyplus.tvhelper.utils.Constant;
import com.joyplus.tvhelper.utils.Log;
import com.joyplus.tvhelper.utils.Utils;
public class PlayerMenuDialog extends AlertDialog implements OnItemClickListener {
private static final String TAG = "JoyplusMediaPlayerMenuDialog";
private VideoPlayerJPActivity mContext;
private static final int MAX = 2;
private int MIN = 0;
// private String[] list1 = {"1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111","222222222222222","33333333333333333","44444444444444","555555555555555555555555555555555555","222222222222222","33333333333333333","44444444444444","555555555555555555555555555555555555"};
// private String[] list3 = {"超清","高清","标清","普清"};
// private String[] list2 = {"字幕关","字幕1","字幕2","字幕3"};
// private String[] list4 = {"全屏","4:3","自适应"};
private List<String> list_juji;
private List<String> list_zimu;
private List<Integer> list_definition;
private List<Integer> list_size;
private Map<Integer, Integer> selectionPosions = new HashMap<Integer, Integer>();
private ListView list;
private MyAdapter adapter;
private ImageView bg_image;
private ImageView bg_title_selceted;
private TextView title_xuanji;
private TextView title_zimu;
private TextView title_definition;
private TextView title_size;
private TextView selectedTitle;
private int title_selecet_index = 0;
private Handler mHandler = new Handler();
public PlayerMenuDialog(VideoPlayerJPActivity context) {
super(context,R.style.Transparent);
// TODO Auto-generated constructor stub
mContext = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
this.setContentView(R.layout.player_menu_dialog);
findViews();
title_size.setVisibility(View.GONE);
// initView();
}
private void findViews(){
list = (ListView) findViewById(R.id.list_choice);
bg_image = (ImageView) findViewById(R.id.highlight_bg);
bg_image.setVisibility(View.INVISIBLE);
bg_title_selceted = (ImageView) findViewById(R.id.title_selected_background);
title_xuanji = (TextView) findViewById(R.id.title_xuanji);
title_zimu = (TextView) findViewById(R.id.title_zimu);
title_definition = (TextView) findViewById(R.id.title_definition);
title_size = (TextView) findViewById(R.id.title_size);
list.setOnItemClickListener(this);
}
private void initView(){
Log.d(TAG, "initView called------------------>");
if(selectedTitle!=null){
selectedTitle.setPadding(0, Utils.getStandardValue(mContext, 10), 0, Utils.getStandardValue(mContext, 10));
selectedTitle.setTextSize(25);
}
MIN = list_juji!=null?0:1;
title_selecet_index = MIN;
updateTitleSelceted();
if(MIN == 0){
title_xuanji.setTextSize(35);
title_xuanji.setPadding(0, 0, 0, 0);
selectedTitle = title_xuanji;
}else{
title_zimu.setTextSize(35);
title_zimu.setPadding(0, 0, 0, 0);
selectedTitle = title_zimu;
title_xuanji.setVisibility(View.GONE);
}
adapter = new MyAdapter();
list.setAdapter(adapter);
list.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Log.d(TAG, "top--------->" + (view.getTop()-Utils.getStandardValue(mContext, 10)));
Log.d(TAG, "bottom----------------->"+(view.getBottom()+Utils.getStandardValue(mContext, 45)));
if(position>=0){
bg_image.setVisibility(View.VISIBLE);
bg_image.layout(bg_image.getLeft(), view.getTop()-Utils.getStandardValue(mContext, 10),
bg_image.getRight(), view.getBottom()+Utils.getStandardValue(mContext, 45));
}else{
bg_image.setVisibility(View.INVISIBLE);
}
// if(title_selecet_index == 3){
// if(list_size.get(position)!=mContext.getVideoSizeType()){
// mContext.changeVideoSize(list_size.get(position));
// }
// }
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
list.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT&& event.getAction() == KeyEvent.ACTION_UP){
title_selecet_index -= 1;
if(title_selecet_index<MIN){
title_selecet_index = MIN;
}else{
updateTitleSelceted();
adapter = new MyAdapter();
list.setAdapter(adapter);
list.setSelection(selectionPosions.get(title_selecet_index));
}
return true;
}else if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT&&event.getAction() == KeyEvent.ACTION_UP){
title_selecet_index += 1;
if(title_selecet_index>MAX){
title_selecet_index = MAX;
}else{
updateTitleSelceted();
adapter = new MyAdapter();
list.setAdapter(adapter);
list.setSelection(selectionPosions.get(title_selecet_index));
}
return true;
}else if(keyCode == KeyEvent.KEYCODE_MENU&&event.getAction() == KeyEvent.ACTION_UP){
dismiss();
return true;
}
return false;
}
});
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Log.d(TAG, "postDelayed --->" +selectionPosions.get(title_selecet_index));
list.setSelection(selectionPosions.get(title_selecet_index));
}
}, 150);
// list.setOnFocusChangeListener(new View.OnFocusChangeListener() {
//
// @Override
// public void onFocusChange(View v, boolean hasFocus) {
// // TODO Auto-generated method stub
// if(hasFocus){
// list.setSelection(selectionPosions.get(title_selecet_index));
// Log.d(TAG, "requst hasFocus ------------->");
// }
// }
// });
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
int count = 0;
switch (title_selecet_index) {
case 0:
count = list_juji.size();
break;
case 1:
count = list_zimu.size();
break;
case 2:
count = list_definition.size();
break;
case 3:
count = list_size.size();
break;
}
return count;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView view;
if(convertView == null){
view = new TextView(mContext);
LayoutParams layoutParams = new LayoutParams(parent.getWidth(), Utils.getStandardValue(mContext, 70));
view.setLayoutParams(layoutParams);
view.setGravity(Gravity.CENTER);
view.setTextColor(Color.WHITE);
view.setTextSize(25);
view.setSingleLine(true);
view.setEllipsize(TruncateAt.MARQUEE);
}else{
view = (TextView) convertView;
}
if(title_selecet_index == 0){
view.setGravity(Gravity.LEFT|Gravity.CENTER_VERTICAL);
view.setPadding(Utils.getStandardValue(mContext, 35), 0, Utils.getStandardValue(mContext, 35), 0);
}else{
view.setGravity(Gravity.CENTER);
view.setPadding(0, 0, 0, 0);
}
switch (title_selecet_index) {
case 0:
view.setText(list_juji.get(position));
break;
case 1:
view.setText(list_zimu.get(position));
break;
case 2:
switch (list_definition.get(position)) {
case Constant.DEFINATION_HD2:
view.setText("超 清");
break;
case Constant.DEFINATION_HD:
view.setText("高 清");
break;
case Constant.DEFINATION_MP4:
view.setText("标 清");
break;
case Constant.DEFINATION_FLV:
view.setText("流 畅");
break;
}
break;
case 3:
switch (list_size.get(position)) {
case JoyplusMediaPlayerScreenManager.LINEARLAYOUT_PARAMS_FULL:
view.setText("全 屏");
break;
case JoyplusMediaPlayerScreenManager.LINEARLAYOUT_PARAMS_16x9:
view.setText("16 : 9");
break;
case JoyplusMediaPlayerScreenManager.LINEARLAYOUT_PARAMS_4x3:
view.setText("4 : 3");
break;
case JoyplusMediaPlayerScreenManager.LINEARLAYOUT_PARAMS_ORIGINAL:
view.setText("自 适 应");
break;
}
break;
}
return view;
}
}
private void updateTitleSelceted(){
MarginLayoutParams p = (MarginLayoutParams) bg_title_selceted.getLayoutParams();
p.setMargins(Utils.getStandardValue(mContext, 15)+(title_selecet_index-MIN)*title_zimu.getWidth(), p.topMargin,
p.rightMargin, p.bottomMargin);
bg_title_selceted.setLayoutParams(p);
// bg_title_selceted.layout(15+(title_selecet_index-MIN)*title_xuanji.getWidth(),
// bg_title_selceted.getTop(),
// 15+(title_selecet_index-MIN)*title_xuanji.getWidth()+bg_title_selceted.getWidth(),
// bg_title_selceted.getBottom());
switch (title_selecet_index) {
case 0:
if(selectedTitle!=null){
selectedTitle.setPadding(0, Utils.getStandardValue(mContext, 10), 0, Utils.getStandardValue(mContext, 10));
selectedTitle.setTextSize(25);
}
title_xuanji.setPadding(0, 0, 0, 0);
title_xuanji.setTextSize(35);
selectedTitle = title_xuanji;
break;
case 1:
if(selectedTitle!=null){
selectedTitle.setPadding(0, Utils.getStandardValue(mContext, 10), 0, Utils.getStandardValue(mContext, 10));
selectedTitle.setTextSize(25);
}
title_zimu.setPadding(0, 0, 0, 0);
title_zimu.setTextSize(35);
selectedTitle = title_zimu;
break;
case 2:
if(selectedTitle!=null){
selectedTitle.setPadding(0, Utils.getStandardValue(mContext, 10), 0, Utils.getStandardValue(mContext, 10));
selectedTitle.setTextSize(25);
}
title_definition.setPadding(0, 0, 0, 0);
title_definition.setTextSize(35);
selectedTitle = title_definition;
break;
case 3:
if(selectedTitle!=null){
selectedTitle.setPadding(0, Utils.getStandardValue(mContext, 10), 0, Utils.getStandardValue(mContext, 10));
selectedTitle.setTextSize(25);
}
title_size.setPadding(0, 0, 0, 0);
title_size.setTextSize(35);
selectedTitle = title_size;
break;
}
}
public void init() {
// TODO Auto-generated method stub
initLists();
// if(findViewById(R.id.title_definition)!=null){
// initView();
// }
}
@Override
public void onAttachedToWindow() {
// TODO Auto-generated method stub
super.onAttachedToWindow();
initView();
}
private void initLists(){
selectionPosions.clear();
list_juji = mContext.getEpisode();
if(list_juji!=null){
int prod_Sub_index = list_juji.indexOf(mContext.getCurrentProdSubName());
if(prod_Sub_index<0){
selectionPosions.put(0, 0);
}else{
selectionPosions.put(0, prod_Sub_index);
}
}else{
selectionPosions.put(0, 0);
}
list_definition = new ArrayList<Integer>();
list_zimu = new ArrayList<String>();
//清晰度
List<URLS_INDEX> playUrls = mContext.getPlayUrls();
JoyplusSubManager subManager = (JoyplusSubManager) JoyplusMediaPlayerManager.getInstance().getSubManager();
if(playUrls!=null){
for(URLS_INDEX url_index_info:playUrls){
if("hd2".equalsIgnoreCase(url_index_info.defination_from_server)&&!list_definition.contains(Constant.DEFINATION_HD2)){
list_definition.add(Constant.DEFINATION_HD2);
}else if("hd".equalsIgnoreCase(url_index_info.defination_from_server)&&!list_definition.contains(Constant.DEFINATION_HD)){
list_definition.add(Constant.DEFINATION_HD);
}else if("mp4".equalsIgnoreCase(url_index_info.defination_from_server)&&!list_definition.contains(Constant.DEFINATION_MP4)){
list_definition.add(Constant.DEFINATION_MP4);
}else if(!list_definition.contains(Constant.DEFINATION_FLV)){
list_definition.add(Constant.DEFINATION_FLV);
}
}
}
if(list_definition.size()>1){
Collections.sort(list_definition, new Comparator<Integer>(){
@Override
public int compare(Integer l, Integer r) {
// TODO Auto-generated method stub.
if(l>r){
return -1;
}else if(r<l){
return 1;
}else{
return 0;
}
}
});
}
int defanition_index = list_definition.indexOf(mContext.getCurrentDefination());
if(defanition_index<0){
defanition_index = 0;
}
selectionPosions.put(2 , defanition_index);
//字幕
if(subManager!=null){
if(subManager.CheckSubAviable()){
list_zimu.add(mContext.getResources().getString(R.string.meidaplayer_sub_string_closesub));
for(int i = 0;i<subManager.getSubList().size();i++){
list_zimu.add(mContext.getResources().getString(R.string.meidaplayer_sub_string_sub,(i+1)));
}
Log.i(TAG, "subManager.getCurrentSubIndex()+1--->" + (subManager.getCurrentSubIndex()+1));
if(subManager.IsSubEnable()){
selectionPosions.put(1, subManager.getCurrentSubIndex()+1);
}else {
selectionPosions.put(1, 0);
}
}else{
list_zimu.add(mContext.getResources().getString(R.string.meidaplayer_sub_string_nosub));
selectionPosions.put(1, 0);
}
}
list_size = new ArrayList<Integer>();
list_size.add(JoyplusMediaPlayerScreenManager.LINEARLAYOUT_PARAMS_FULL);
list_size.add(JoyplusMediaPlayerScreenManager.LINEARLAYOUT_PARAMS_16x9);
list_size.add(JoyplusMediaPlayerScreenManager.LINEARLAYOUT_PARAMS_4x3);
list_size.add(JoyplusMediaPlayerScreenManager.LINEARLAYOUT_PARAMS_ORIGINAL);
// Log.d(TAG, "size type -- >" + mContext.getVideoSizeType());
// int index_size = list_size.indexOf(mContext.getVideoSizeType());
// if(index_size<0){
// index_size = 0;
// }
selectionPosions.put(3 , 0);
Log.d(TAG, "0----->"+selectionPosions.get(0));
Log.d(TAG, "1----->"+selectionPosions.get(1));
Log.d(TAG, "2----->"+selectionPosions.get(2));
Log.d(TAG, "3----->"+selectionPosions.get(3));
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
switch (title_selecet_index) {
case 0://切换剧集
String newPord_sub_name = list_juji.get(position);
if(!newPord_sub_name.equals(mContext.getCurrentProdSubName())){
//通知改变剧集
mContext.changeEpisode(position);
}
break;
case 1://切换字幕
JoyplusSubManager subManager = (JoyplusSubManager) JoyplusMediaPlayerManager.getInstance().getSubManager();
if(subManager!=null&&subManager.CheckSubAviable()){
if(position==0){
if(subManager.IsSubEnable()){
subManager.setSubEnable(false);
mContext.changeSubViewVisible(false);
}
}else{
if(subManager.getCurrentSubIndex()!=(position-1)){
subManager.setSubEnable(true);
mContext.changeSubViewVisible(true);
final int zimu_index = position-1;
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
((JoyplusSubManager)JoyplusMediaPlayerManager.getInstance().getSubManager()).SwitchSub(zimu_index);
}
}).start();
}
}
}
break;
case 2://切换清晰度
mContext.changeDefination(list_definition.get(position));
break;
case 3://切换画面比例
break;
default:
break;
}
dismiss();
}
}